﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;

namespace Atentis_Connector
{

	/// <summary>
	/// События с данными из таблиц.
	/// </summary>
	public class WrapperEventArgs : EventArgs
	{
		/// <summary>
		/// Данные (строка) таблицы
		/// </summary>
		public DataRow RowData { get; private set; }
		/// <summary>
		/// Имя таблицы
		/// </summary>
		public string TableName { get; private set; }

		public WrapperEventArgs(DataRow rowData, string tableName)
		{
			this.RowData = rowData;
			this.TableName = tableName;
		}

	}

	/// <summary>
	/// Общий интерфейс оберток к "терминалам"
	/// </summary>
	interface IWrapper
	{

		/// <summary>
		/// Список подключений данного враппера
		/// </summary>
		List<IConnection> Connections { get; }

		/// <summary>
		/// Добавление нового подключения
		/// </summary>
		/// <param name="connectionID">Идентификатор подключения</param>
		/// <param name="server">Сервер</param>
		/// <param name="login">Логин</param>
		/// <param name="password">Пароль</param>
		/// <param name="port">Порт (по умолчанию 7800)</param>
		/// <returns>Возвращает подключение</returns>
		IConnection AddConnection(string connectionID, string server, string login, string password, int port = 7800);
		
		/// <summary>
		/// Удаление существующего подключения
		/// </summary>
		/// <param name="connection">Подключение, которое нужно удалить</param>
		/// <returns>Число - результат удаления. 0 - если все хорошо</returns>
		int DelConnection(IConnection connection);

		/// <summary>
		/// Перезапуск подключения
		/// </summary>
		/// <param name="connection">Подключение, которое нужно перезапустить</param>
		/// <returns>Число - результат удаления. 0 - если все хорошо</returns>
		int ReloadConnection(IConnection connection);

	}
}
